#include "stm32f10x.h"                  // Device header

int duty,fr;

void ic_init(void)
{
	RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);

	GPIO_InitTypeDef pwm_gpio_init;
	pwm_gpio_init.GPIO_Mode=GPIO_Mode_IPU;
	pwm_gpio_init.GPIO_Pin=GPIO_Pin_6;
	pwm_gpio_init.GPIO_Speed=GPIO_Speed_50MHz;
	GPIO_Init(GPIOA,&pwm_gpio_init);
	
	TIM_InternalClockConfig(TIM3);	
	TIM_TimeBaseInitTypeDef ic_tim_init;
	TIM_TimeBaseStructInit(&ic_tim_init);
	ic_tim_init.TIM_CounterMode=TIM_CounterMode_Up;
	ic_tim_init.TIM_Period=7200;//arr
	ic_tim_init.TIM_Prescaler=1000-1;//psc
	TIM_TimeBaseInit(TIM3,&ic_tim_init);
	
	TIM_ICInitTypeDef tim_ic_init;
	tim_ic_init.TIM_Channel=TIM_Channel_1;
	tim_ic_init.TIM_ICFilter=0xF;
	tim_ic_init.TIM_ICPolarity=TIM_ICPolarity_Rising;
	tim_ic_init.TIM_ICPrescaler=TIM_ICPSC_DIV1;
	tim_ic_init.TIM_ICSelection=TIM_ICSelection_DirectTI;
	TIM_PWMIConfig(TIM3,&tim_ic_init);
	
	TIM_SelectInputTrigger(TIM3,TIM_TS_TI1FP1);
	TIM_SelectSlaveMode(TIM3,TIM_SlaveMode_Reset);
	
	TIM_Cmd(TIM3,ENABLE);
	
}

void ic_get(void)
{
	duty=TIM_GetCapture2(TIM3)*100/TIM_GetCapture1(TIM3);
	fr=72000/TIM_GetCapture1(TIM3);
}

